<!DOCTYPE HTML>
<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<!-- WARNING: The interaction of writing-mode and min-content sizing seems to be a bit hazy. It's not clear if this is a correct reference. -->
<html>
  <meta charset="utf-8">
  <title>Reference: Masonry layout min-content sizing</title>
  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
  <style>

@import "support/masonry-intrinsic-sizing-visual.css";

grid {
  display: inline-grid;
  gap: 1px 2px;
  grid-auto-flow: column;
  border: 1px solid;
  padding: 1px 0 2px 0;
  vertical-align: top;
  height: min-content;
}
.auto grid {
  grid-template-rows: repeat(4,auto);
}
.fr grid {
  grid-template-rows: 1fr 2fr 1fr 1fr;
}
.mix1 grid {
  grid-template-rows: 1fr 2fr min-content max-content;
}
.mix2 grid {
  grid-template-rows: 1.1ch auto 1.4ch 1fr;
  /* keep fixed values small enough for spanners to have an effect */
}

item {
  justify-self: start;
  writing-mode: vertical-rl;
  text-orientation: sideways;
}
.hidden {
  visibility: hidden;
  width: 0;
}
</style>

<body>

<section class="auto">
<grid>
  <item style="height:2ch">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-column: span 2">5 5</item>

  <item class="hidden" style="grid-area: 4/2">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-column: span 2">5 5</item>

  <item class="hidden" style="grid-area: 4/2">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item style="grid-area: 1/2">4</item>
  <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>

  <item class="hidden" style="grid-area: 1/2">0 0</item>
  <item class="hidden" style="grid-area: 2/1">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/2">0 0</item>
</grid>

<grid>
  <item style="grid-row: 4">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-area: 2/1/4/2">5 5</item>
  <item style="height:5ch; grid-area: 1/2/4/3">6</item>

  <item class="hidden" style="grid-area: 3/3">0</item>
  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/1">0 0</item>
</grid>

<grid>
  <item style="grid-row: 4">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
  <item style="height:5ch; grid-area: 1/2/4/3">6</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/1">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-area: 1/3/5/4">5 5</item>

  <item class="hidden" style="grid-area: 1/3">0 0</item>
  <item class="hidden" style="grid-area: 3/3">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:6ch; grid-area: 1/3/5/4">5 5</item>

  <item class="hidden" style="grid-area: 1/3">0 0</item>
  <item class="hidden" style="grid-area: 4/3">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:6ch; grid-area: 1/3/4/4">5 5</item>

  <item class="hidden" style="grid-area: 1/3">0 0</item>
  <item class="hidden" style="grid-area: 4/3">0 0</item>
  <item class="hidden" style="height:6ch; grid-area: 2/3/5/4">0 0</item>
</grid>
</section>

<!-- ditto with 'fr' sizing -->

<section class="fr">
<grid>
  <item style="height:2ch">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-column: span 2">5 5</item>

  <item class="hidden" style="grid-area: 4/2">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-column: span 2">5 5</item>

  <item class="hidden" style="grid-area: 4/2">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item style="grid-area: 1/2">4</item>
  <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>

  <item class="hidden" style="grid-area: 1/2">0 0</item>
  <item class="hidden" style="grid-area: 2/1">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/2">0 0</item>
</grid>

<grid>
  <item style="grid-row: 4">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-area: 2/1/4/2">5 5</item>
  <item style="height:5ch; grid-area: 1/2/4/3">6</item>

  <item class="hidden" style="grid-area: 3/3">0</item>
  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/1">0 0</item>
</grid>

<grid>
  <item style="grid-row: 4">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
  <item style="height:5ch; grid-area: 1/2/4/3">6</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/1">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-area: 1/3/5/4">5 5</item>

  <item class="hidden" style="grid-area: 1/3">0 0</item>
  <item class="hidden" style="grid-area: 3/3">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:6ch; grid-area: 1/3/5/4">5 5</item>

  <item class="hidden" style="grid-area: 1/3">0 0</item>
  <item class="hidden" style="grid-area: 4/3">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:6ch; grid-area: 1/3/4/4">5 5</item>

  <item class="hidden" style="grid-area: 1/3">0 0</item>
  <item class="hidden" style="grid-area: 4/3">0 0</item>
  <item class="hidden" style="height:6ch; grid-area: 2/3/5/4">0 0</item>
</grid>
</section>

<!-- ditto with mixed sizing: fr + min/max-content -->

<section class="mix1">
<grid>
  <item style="height:2ch">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-column: span 2">5 5</item>

  <item class="hidden" style="grid-area: 4/2">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-column: span 2">5 5</item>

  <item class="hidden" style="grid-area: 4/2">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item style="grid-area: 1/2">4</item>
  <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>

  <item class="hidden" style="grid-area: 1/2">0 0</item>
  <item class="hidden" style="grid-area: 2/1">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/2">0 0</item>
</grid>

<grid>
  <item style="grid-row: 4">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-area: 2/1/4/2">5 5</item>
  <item style="height:5ch; grid-area: 1/2/4/3">6</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/1">0 0</item>
</grid>

<grid>
  <item style="grid-row: 4">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
  <item style="height:5ch; grid-area: 1/2/4/3">6</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/1">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-area: 1/3/5/4">5 5</item>

  <item class="hidden" style="grid-area: 1/3">0 0</item>
  <item class="hidden" style="grid-area: 3/3">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:6ch; grid-area: 1/3/5/4">5 5</item>

  <item class="hidden" style="grid-area: 1/3">0 0</item>
  <item class="hidden" style="grid-area: 4/3">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:6ch; grid-area: 1/3/4/4">5 5</item>

  <item class="hidden" style="grid-area: 1/3">0 0</item>
  <item class="hidden" style="grid-area: 4/3">0 0</item>
  <item class="hidden" style="height:6ch; grid-area: 2/3/5/4">0 0</item>
</grid>
</section>

<!-- ditto with mixed sizing: fixed + auto + fr -->

<section class="mix2">
<grid>
  <item style="height:2ch">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-column: span 2">5 5</item>

  <item class="hidden" style="grid-area: 4/2">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-column: span 2">5 5</item>

  <item class="hidden" style="grid-area: 4/2">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item style="grid-area: 1/2">4</item>
  <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>

  <item class="hidden" style="grid-area: 1/2">0 0</item>
  <item class="hidden" style="grid-area: 2/1">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/2">0 0</item>
</grid>

<grid>
  <item style="grid-row: 4">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-area: 2/1/4/2">5 5</item>
  <item style="height:5ch; grid-area: 1/2/4/3">6</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
  <item class="hidden" style="grid-area: 3/1">0 0</item>
</grid>

<grid>
  <item style="grid-row: 4">1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
  <item style="height:5ch; grid-area: 1/2/4/3">6</item>

  <item class="hidden" style="grid-area: 2/1">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="grid-area: 1/3/5/4">5 5</item>

  <item class="hidden" style="grid-area: 4/3">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:6ch; grid-area: 1/3/5/4">5 5</item>

  <item class="hidden" style="grid-area: 4/3">0 0</item>
</grid>

<grid>
  <item>1</item>
  <item style="grid-column: span 2">2 2</item>
  <item style="grid-column: span 2">3 3</item>
  <item>4</item>
  <item style="height:6ch; grid-area: 1/3/4/4">5 5</item>

  <item class="hidden" style="grid-area: 4/3">0 0</item>
  <item class="hidden" style="height:6ch; grid-area: 2/3/5/4">0 0</item>
</grid>
</section>
